package persistance.dal;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import ucc.objects.ClasseDeProduitDTO;
import biz.BizFactory;

public class ClasseDeProduitFinderImpl implements ClasseDeProduitFinder {

	private PreparedStatement q1;
	private PreparedStatement q2;
	private final String Q1 = "select * from caisse.classes_de_produits where id_classe_de_produit=?";
	private final String Q2 = "select * from caisse.classes_de_produits";

	public ClasseDeProduitFinderImpl() {
		this.q1 = DalBackEndServices.INSTANCE.prepare(Q1);
		this.q2 = DalBackEndServices.INSTANCE.prepare(Q2);
	}

	public ClasseDeProduitDTO laClasseDeProduitNum(int id) {
		ResultSet rs = null;
		try {
			q1.setInt(1, id);
			rs = q1.executeQuery();
			ClasseDeProduitDTO classeDeProduit = BizFactory.INSTANCE
					.createEmptyClasseDeProduitDTO();
			while (rs.next()) {
				classeDeProduit.setId(id);
				classeDeProduit.setDesignation(rs.getString("denomination"));
			}
			return classeDeProduit;
		} catch (SQLException e) {
			System.out.println("[E][SQL] : ");
			e.printStackTrace();
		}
		return null;
	}

	public ArrayList<ClasseDeProduitDTO> lesClassesDeProduits() {
		ResultSet rs = null;
		ArrayList<ClasseDeProduitDTO> listeClassesDeProduit = new ArrayList<ClasseDeProduitDTO>();
		try {
			rs = q2.executeQuery();
			while (rs.next()) {
				ClasseDeProduitDTO classeDeProduit = BizFactory.INSTANCE
						.createEmptyClasseDeProduitDTO();

				classeDeProduit.setId(rs.getInt("id_classe_de_produit"));
				classeDeProduit.setDesignation(rs.getString("denomination"));

				listeClassesDeProduit.add(classeDeProduit);
			}
			return listeClassesDeProduit;
		} catch (SQLException e) {
			System.out.println("[E][SQL] : ");
			e.printStackTrace();
		}
		return null;
	}
}
